package ModelLayer;

import java.util.ArrayList;

public class SalgContainer {

	private ArrayList<Salg> salgCon;
	private int salgsNr = 0;
	/**
	 * Singleton field*/
	private static SalgContainer instance;
	
	/**
	 * */
	private SalgContainer()
	{
		salgCon = new ArrayList<Salg>();
	}
	
	/**
	 * Singleton method
	 * */
	public static SalgContainer getInstance()
	{
		if(instance == null){
			instance = new SalgContainer();
		}
		return instance;
	}
	/**
	 * Create new salg object and add to container.
	 * @param String salgsDato
	 * */
	public void createSalg()
	{		
		Salg s = new Salg();
		s.setSalgsNr(salgsNr);
		salgsNr++;
		salgCon.add(s);
	}
	/**
	 * find Salg in salgsContainer
	 * @param int salgsNr
	 * @return Salg
	 * */
	public Salg findSalg(int sN)
	{
		boolean search = false;
		int index = 0;
		Salg s = null;
		while(!search && index < salgCon.size()){
			s = salgCon.get(index);
			if(s.getSalgsNr() == sN){
				search = true;
			}else{
				index++;
			}
		}
		if(search){
			return salgCon.get(index);
		}else{
			return null;
		}
	}
	/**
	 * Delete a Salg object from the arrayList of Salg.
	 * 
	 * */
	public void removeSalg(int sN)
	{
		boolean search = false;
		int index = 0;
		Salg s = null;
		while(!search && index < salgCon.size()){
			s = salgCon.get(index);
			if(s.getSalgsNr() == sN){
				search = true;
			}else{
				index++;
			}
		}
		if(search){
			salgCon.remove(index);
		}
	}
	/**
	 * Add DelSalg to a Salg object.
	 * @param int artikelNr, int antal, int salgsNr 
	 * */
	public void addDelSalgToSalg(int aN, int a, int sN)
	{
		Salg s = findSalg(sN);
		if(s == null){
			System.out.println("Vare ikke fundet.");
		}else{
			s.addDelSalg(aN, a);
		}
	}
	/**
	 * Add Kunde to Salg
	 * @param String tlf, int salgsNr
	 * */
	public void addKundeToSalg(String tlf, int sN)
	{
		Salg s = findSalg(sN);
		s.addKunde(tlf);
	}
	/**
	 * Add rabat to Salg
	 * @param int salgsNr, int percent
	 * */
	public void addRabatToSalg(int sN, int p)
	{
		Salg s = findSalg(sN);
		s.setExtraRabat(p);
	}
	/**
	 * Get totalPrice of a Salg
	 * @param int salgsNr
	 * @return float price
	 * */
	public float getSalgPrice(int sN)
	{
		Salg s = findSalg(sN);
		return s.getTotalPrice();
	}
	/**
	 * Remove DelSalg from Salg
	 * @param int salgsNr, int artikelNr
	 * */
	public void removeDelSalgFromSalg(int salgsNr, int artikelNr)
	{
		Salg s = findSalg(salgsNr);
		s.removeDelSalg(artikelNr);
	}
	/**
	 * Remove kunde from salg
	 * @param int salgsNr
	 * */
	public void removeKundeFromSalg(int sN)
	{
		Salg s = findSalg(sN);
		s.removeKunde();
	}
	/**
	 * Set salg to betalt or not betalt.
	 * Get salg status.
	 * @param boolean betalt
	 * @return boolean betalt
	 * */
	public void setBetalt(int sN)
	{
		Salg s = findSalg(sN);
		
		if(s.getBetalt() == true){
			s.setBetalt(false);
		}else{
			s.setBetalt(true);
		}
	}
	public boolean getBetalt(int sN)
	{
		Salg s = findSalg(sN);
		return s.getBetalt();
	}
	
	/**
	 * Return an arrayList of all salg
	 * @return arrayList<salg>
	 * 
	 * */
	public ArrayList<Salg> getAllSalg()
	{
		return salgCon;
	}
	
}
